/*
 * $Id: $
 */
package org.rcgwt.client.ui.grid.controller;

import org.rcgwt.client.ui.grid.internal.model.IElementModel;
import org.rcgwt.client.ui.grid.internal.model.IGridEventManager;
import org.rcgwt.client.ui.grid.model.IGridWidget;
import org.rcgwt.client.ui.grid.renderer.IViewRenderContext;

import com.google.gwt.dom.client.Element;
import com.google.gwt.user.client.Event;

/**
 * 
 * @author Olivier Oeuillot (latest modification by $Author: $)
 * @version $Revision: $ $Date: $
 */
public interface IGridModelController {

    void installElementEventsListener(IViewRenderContext viewRenderContext,
            IElementModel elementModel, Element keysEventsElement,
            Element scrollEventElement);

    void onBrowserEvent(IGridWidget gridWidget, Event event);

    // void onModelSelectionEvent(SelectionEvent<ISelectionState> event);

    // void updateSelectionControl();

    IGridEventManager getGridEventManager(IGridWidget gridWidget);

    void setCaptureEventListener(ICaptureEventListener captureEventListener);

    void releaseCapture(ICaptureEventListener captureEventListener);

    /*
     * void onLoad(IGridRenderContext gridRenderContext, IGridModel gridModel);
     * 
     * void onUnload(IGridRenderContext gridRenderContext, IGridModel
     * gridModel);
     * 
     * void onBrowserEvent(Event event, IGridRenderContext gridRenderContext);
     * 
     * void onModelSelectionEvent(IGridRenderContext gridRenderContext,
     * SelectionEvent<ISelectionState> event);
     * 
     * void onModelElementMouseMoveEvent(IGridRenderContext gridRenderContext,
     * IElementModel overModelElement, IViewModel view);
     * 
     * void onModelElementMouseOverEvent(IElementModel overModelElement);
     * 
     * void onModelElementMouseOutEvent(IGridRenderContext gridRenderContext,
     * IElementModel overModelElement);
     */
}
